package com.example.webupload.dto;

import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 分片上传请求DTO
 */
@Data
public class ChunkUploadDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 文件分片
     */
    @NotNull(message = "文件分片不能为空")
    private MultipartFile file;

    /**
     * 文件MD5值
     */
    @NotBlank(message = "文件MD5值不能为空")
    private String fileMd5;

    /**
     * 分片编号，从0开始
     */
    @NotNull(message = "分片编号不能为空")
    @Min(value = 0, message = "分片编号必须大于等于0")
    private Integer chunkNumber;

    /**
     * 分片大小
     */
    @NotNull(message = "分片大小不能为空")
    @Min(value = 0, message = "分片大小必须大于等于0")
    private Long chunkSize;

    /**
     * 总分片数
     */
    @NotNull(message = "总分片数不能为空")
    @Min(value = 1, message = "总分片数必须大于等于1")
    private Integer totalChunks;

    /**
     * 文件总大小
     */
    @NotNull(message = "文件总大小不能为空")
    @Min(value = 0, message = "文件总大小必须大于等于0")
    private Long totalSize;

    /**
     * 原始文件名
     */
    @NotBlank(message = "原始文件名不能为空")
    private String originalFilename;
}